// 《围棋》作者版权所有。版权所有。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

package runtime

import "unsafe"

// go:cgo\u export\u static main 

// 链接到二进制时由运行时/cgo填写。（英国）CDEFG

// go:linkname\u cgo\u yield\u cgo\u yield 

var (
	_cgo_init                     unsafe.Pointer
	_cgo_thread_start             unsafe.Pointer
	_cgo_sys_thread_create        unsafe.Pointer
	_cgo_notify_runtime_init_done unsafe.Pointer
	_cgo_callers                  unsafe.Pointer
	_cgo_set_context_function     unsafe.Pointer
	_cgo_yield                    unsafe.Pointer
)

// ISGO由运行时/cgo包
var iscgo bool

// cgo为cgo创建额外M时，启动时设置CGOasExtram。
// 在任何C/C++代码调用cgocallback之前，必须创建额外的M。
var cgoHasExtraM bool

// cgoUse由cgo生成的代码调用（使用go:linkname获取
// 未报告的名称）。这些调用有两个用途：
// 1）它们是不透明的，无法逃避分析，因此该参数被认为是
// 逃避到堆中。
// 2）他们在调用站点之前保持参数的活动性；调用是在C对参数的（假定）使用结束后发出的。不应实际调用cgoAlwaysFalse（参见cgoAlwaysFalse）。
func cgoUse(interface{}) { throw("cgoUse should not be called") }

// cgoAlwaysFalse是一个始终为false的布尔值。
// cgo生成的代码表示如果cgoAlwaysFalse{cgoUse（p）}。
// 编译器无法看到cgoAlwaysFalse始终为false，
// 因此它发出测试并保留调用，给出所需的
// 转义分析结果。测试比打电话便宜。
var cgoAlwaysFalse bool

var cgo_yield = &_cgo_yield
